#ifndef REGISTRAR_H_
#define REGISTRAR_H_
#include <boost/shared_ptr.hpp>

#include "student.h"
#include "curriculum.h"

/// Central registration of curriculum and student information.
class Registrar {
	boost::shared_ptr<struct RegistrarImpl> pimpl_;
    static Registrar* instance_;
    
public:
	virtual ~Registrar();

    static Registrar* instance();
	void student(const Student& newstudent);
    void curriculum(const Curriculum& newcurriculum);
	Student student() const;
	const Curriculum& curriculum() const;

private:
	Registrar();
    Registrar(const Registrar&);
    Registrar& operator=(const Registrar&);
};


#endif
